//
// Created by tatyx on 2025/8/31.
//

#ifndef GC_30_ANO_PID_H
#define GC_30_ANO_PID_H




#include "stdint.h"
#include "main.h"

typedef struct
{
    u8 fb_d_mode;
    float kp;			 //比例系数
    float ki;			 //积分系数
    float kd_ex;		 	 //微分系数
    float kd_fb; //previous_d 微分先行
    //	float inc_hz;  //不完全微分低通系数
    //	float k_inc_d_norm; //Incomplete 不完全微分 归一（0,1）
    float k_ff;		 //前馈

}_PID_arg_st;




typedef struct
{
    float err;
    float exp_old;
    float feedback_old;

    float fb_d;
    float fb_d_ex;
    float exp_d;
    //	float err_d_lpf;
    float err_i;
    float ff;
    float pre_d;

    float out;
}_PID_val_st;

float PID_calculate( float T,            //周期
                                        float in_ff,				//前馈
                                        float expect,				//期望值（设定值）
                                        float feedback,			//反馈值
                                        _PID_arg_st *pid_arg, //PID参数结构体
                                        _PID_val_st *pid_val,	//PID数据结构体
                                        float inte_d_lim,
                                        float inte_lim			//integration limit，积分限幅
                                           );			//输出





#endif //GC_30_ANO_PID_H